package com.ruoyi.tongji.entity.linkman;

import com.ruoyi.tongji.run.manager.ManagerFactory;
import com.ruoyi.tongji.utils.DateUtil;

import java.util.*;

public class 宣传员费用汇总 {
    private List<宣传员费用> 宣传员费用List = new ArrayList<>();
    private 宣传员费用明细 费用明细 = new 宣传员费用明细();

    private List<朗程费用明细> 附加误工费List = new ArrayList<>();
    private List<朗程费用明细> 朗程宣传费用List = new ArrayList<>();

    private Date dateRangeStart;
    private Date dateRangeEnd;

    public String dateRange;

    public void 汇总() {
        for (Iterator<宣传员费用> iterator = 宣传员费用List.iterator(); iterator.hasNext();) {

            宣传员费用 宣传员费用 = iterator.next();

            this.费用明细.add朗程检疫期费用(宣传员费用.get合并后费用明细().get朗程检疫期费用());
            this.费用明细.add朗程超半年费用(宣传员费用.get合并后费用明细().get朗程超半年费用());
            this.费用明细.add手开检疫期费用(宣传员费用.get合并后费用明细().get手开检疫期费用());
            this.费用明细.add手开超半年费用(宣传员费用.get合并后费用明细().get手开超半年费用());
            this.费用明细.add附加误工费(宣传员费用.get合并后费用明细().get附加误工费());
            this.费用明细.add管理费(宣传员费用.get合并后费用明细().get管理费());
            this.费用明细.add朗程介绍费(宣传员费用.get合并后费用明细().get朗程介绍费());
            this.费用明细.add手开介绍费(宣传员费用.get合并后费用明细().get手开介绍费());
            this.费用明细.add朗程引领费(宣传员费用.get合并后费用明细().get朗程引领费());
            this.费用明细.add手开引领费(宣传员费用.get合并后费用明细().get手开引领费());
            this.费用明细.add补充介绍费(宣传员费用.get合并后费用明细().get补充介绍费());
            this.费用明细.add补充营养费(宣传员费用.get合并后费用明细().get补充营养费());
            this.费用明细.add不合格附加误工费(宣传员费用.get合并后费用明细().get不合格附加误工费());
            this.费用明细.add其他费用(宣传员费用.get合并后费用明细().get其他费用());

            this.费用明细.add朗程检疫期费用数量(宣传员费用.get合并后费用明细().get朗程检疫期费用数量());
            this.费用明细.add朗程超半年费用数量(宣传员费用.get合并后费用明细().get朗程超半年费用数量());
            this.费用明细.add手开检疫期费用数量(宣传员费用.get合并后费用明细().get手开检疫期费用数量());
            this.费用明细.add手开超半年费用数量(宣传员费用.get合并后费用明细().get手开超半年费用数量());
            this.费用明细.add附加误工费数量(宣传员费用.get合并后费用明细().get附加误工费数量());
            this.费用明细.add管理费数量(宣传员费用.get合并后费用明细().get管理费数量());
            this.费用明细.add手开介绍费数量(宣传员费用.get合并后费用明细().get手开介绍费数量());
            this.费用明细.add朗程介绍费数量(宣传员费用.get合并后费用明细().get朗程介绍费数量());
            this.费用明细.add手开引领费数量(宣传员费用.get合并后费用明细().get手开引领费数量());
            this.费用明细.add朗程引领费数量(宣传员费用.get合并后费用明细().get朗程引领费数量());
            this.费用明细.add补充介绍费数量(宣传员费用.get合并后费用明细().get补充介绍费数量());
            this.费用明细.add补充营养费数量(宣传员费用.get合并后费用明细().get补充营养费数量());
            this.费用明细.add不合格附加误工费数量(宣传员费用.get合并后费用明细().get不合格附加误工费数量());
            this.费用明细.add其他费用数量(宣传员费用.get合并后费用明细().get其他费用数量());

            this.get附加误工费List().addAll(宣传员费用.get附加误工费List());
            this.get朗程宣传费用List().addAll(宣传员费用.get朗程宣传费用List());

            if (宣传员费用.get合并宣传员费用() != null) {
                this.get朗程宣传费用List().addAll(宣传员费用.get合并宣传员费用().get朗程宣传费用List());
                this.get附加误工费List().addAll(宣传员费用.get合并宣传员费用().get附加误工费List());
            }
        }

        Map data = new HashMap();
        data.put("today", new Date());
        data.put("collect", this);

        ManagerFactory.createExcel(宣传员费用.root + "\\" + this.getDateRange() + "\\费用统计",
                "excelTemplates/linkman/宣传员-费用汇总.xlsx",
                "\\0-汇总-" + this.getDateRange() + ".xlsx",data);

        ManagerFactory.createExcel(宣传员费用.root + "\\" + this.getDateRange() + "\\费用统计",
                "excelTemplates/linkman/宣传员-费用汇总-朗程.xlsx",
                "\\0-汇总-朗程费用汇总-" + this.getDateRange() + ".xlsx",data);

        ManagerFactory.createExcel(宣传员费用.root + "\\" + this.getDateRange() + "\\",
                "excelTemplates/linkman/零用工平台上传模板-朗程.xlsx",
                "\\零用工平台上传模板-朗程-" + this.getDateRange() + ".xlsx",data);

        ManagerFactory.createExcel(宣传员费用.root + "\\" + this.getDateRange() + "\\",
                "excelTemplates/linkman/零用工平台上传模板-管理费.xlsx",
                "\\零用工平台上传模板-管理费-" + this.getDateRange() + ".xlsx",data);

        ManagerFactory.createExcel(宣传员费用.root + "\\" + this.getDateRange() + "\\费用统计",
                "excelTemplates/linkman/宣传员-费用汇总-其他.xlsx",
                "\\0-汇总-管理费及其他费用汇总-" + this.getDateRange() + ".xlsx",data);

        ManagerFactory.createExcel(宣传员费用.root + "\\" + this.getDateRange() + "\\",
                "excelTemplates/linkman/宣传员路费统计-朗程.xlsx",
                "\\" + this.getDateRange() + "-宣传员路费统计(" + this.get附加误工费List().size() + ").xlsx",data);

        ManagerFactory.createExcel(宣传员费用.root + "\\" + this.getDateRange() + "\\",
                "excelTemplates/linkman/宣传员宣传费用统计.xlsx",
                "\\" + this.getDateRange() + "-宣传员宣传费用统计(" + this.get朗程宣传费用List().size() + ").xlsx",data);
    }

    public List<宣传员费用> get宣传员费用List() {
        return 宣传员费用List;
    }

    public void set宣传员费用List(List<宣传员费用> 宣传员费用List) {
        this.宣传员费用List = 宣传员费用List;
    }

    public 宣传员费用明细 get费用明细() {
        return 费用明细;
    }

    public void set费用明细(宣传员费用明细 费用明细) {
        this.费用明细 = 费用明细;
    }

    public Date getDateRangeStart() {
        return dateRangeStart;
    }

    public void setDateRangeStart(Date dateRangeStart) {
        this.dateRangeStart = dateRangeStart;
    }

    public Date getDateRangeEnd() {
        return dateRangeEnd;
    }

    public void setDateRangeEnd(Date dateRangeEnd) {
        this.dateRangeEnd = dateRangeEnd;
    }

    public String getDateRange() {
        this.dateRange = DateUtil.format(dateRangeStart, "yyyy年MM月dd日") + "至" + DateUtil.format(dateRangeEnd, "yyyy年MM月dd日");
        return this.dateRange;
    }

    public List<朗程费用明细> get朗程宣传费用List() {
        return 朗程宣传费用List;
    }

    public void set朗程宣传费用List(List<朗程费用明细> 朗程宣传费用List) {
        this.朗程宣传费用List = 朗程宣传费用List;
    }

    public List<朗程费用明细> get附加误工费List() {
        return 附加误工费List;
    }

    public void set附加误工费List(List<朗程费用明细> 附加误工费List) {
        this.附加误工费List = 附加误工费List;
    }

    public void setDateRange(String dateRange) {
        this.dateRange = dateRange;
    }
}
